module counter(
    input  wire clk,
    input  wire clr,           // 清零信号（低有效）
    input  wire Start_timer_33, // 启动倒计时信号（高有效）
    output reg [7:0] q          // 计数器输出
);

    // 计数器需要能表示 32 到 0，所以至少需要 6 位 (2^5 = 32, 2^6 = 64)
    // 使用 6 位寄存器

    always@(posedge clk or negedge clr)
        begin
            if(!clr)  // 优先级最高的复位条件
                q <= 8'd32; // reset 时计数器从32开始
            else if(Start_timer_33) // Start_timer_33 置位时，重新加载32
                q <= 8'd32;
            else if(q > 0) // 在非复位、非启动且大于0时递减
                q <= q - 1;
            else // counter_33 == 0 且 Start_timer_33 为 NO 时，保持 0
                 q <= q;
        end

endmodule


